package app_util

import (
	"flag"

	"sync"

	app_constants "app/app_src/framework/constant/app"
)

type Args struct {
	// 指明配置文件的路径
	Config string
	// 指明运行的环境
	Env string
}

// 启动参数字段
const _ARG_NAME_CONFIF = "config"
const _ARG_NAME_ENV = "env"

// 启动参数
var _Args *Args

// 获取启动参数
func GetArgs() *Args {
	if _Args != nil {
		return _Args
	}

	// 对解析命令行参数的逻辑加上锁
	var mutex sync.Mutex
	mutex.Lock()
	defer mutex.Unlock()

	var configPath string
	var env string
	// 获取命令参数
	flag.StringVar(&configPath, _ARG_NAME_CONFIF, "", "")
	flag.StringVar(&env, _ARG_NAME_ENV, app_constants.ENV_PROD, "")
	flag.Parse()

	args := Args{Config: configPath, Env: env}
	_Args = &args

	return &args
}

func SetArgs(args *Args) {
	_Args = args
}
